// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

library script_view_element;

import 'dart:html';
import 'package:logging/logging.dart';
import 'package:polymer/polymer.dart';
import 'observatory_element.dart';

/// Displays an Error response.
@CustomTag('script-view')
class ScriptViewElement extends ObservatoryElement {
  @published Script script;

  String hitsStyle(ScriptLine line) {
    if (line.hits == -1) {
      return 'min-width:32px;';
    } else if (line.hits == 0) {
      return 'min-width:32px;background-color:red';
    }
    return 'min-width:32px;background-color:green';
  }

  void refreshCoverage(Event e, var detail, Node target) {
    var isolateId = app.locationManager.currentIsolateId();
    var isolate = app.isolateManager.getIsolate(isolateId);
    if (isolate == null) {
      Logger.root.info('No isolate found.');
      return;
    }
    var request = '/$isolateId/coverage';
    app.requestManager.requestMap(request).then((Map coverage) {
      assert(coverage['type'] == 'CodeCoverage');
      isolate.updateCoverage(coverage['coverage']);
      notifyPropertyChange(#hitsStyle, "", hitsStyle);
    }).catchError((e, st) {
      print('refreshCoverage $e $st');
    });
  }

  ScriptViewElement.created() : super.created();
}