client/js/list-bin.js
author rougeronj
Wed, 03 Jun 2015 17:27:46 +0200
changeset 471 e0c7be5dc02c
parent 433 e457ec945e50
child 647 eaaa1efce396
permissions -rw-r--r--
Add a router to handle fragment identifier Set up a listener of the router in the scene to update it Start Backbone.history (eventlistener of the router) when all the project is loaded Include router.js to all the test file
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
78
af9e716b01bc Renkan bin configuration now with class names instead of classes themselves
veltr
parents: 75
diff changeset
     1
Rkns.ResourceList = {};
af9e716b01bc Renkan bin configuration now with class names instead of classes themselves
veltr
parents: 75
diff changeset
     2
af9e716b01bc Renkan bin configuration now with class names instead of classes themselves
veltr
parents: 75
diff changeset
     3
Rkns.ResourceList.Bin = Rkns.Utils.inherit(Rkns._BaseBin);
73
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
     4
426
05ed0d95a511 split templates in main, list-bin and wikipedia-bin
rougeronj
parents: 293
diff changeset
     5
Rkns.ResourceList.Bin.prototype.resultTemplate = renkanJST['templates/list-bin.html'];
73
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
     6
78
af9e716b01bc Renkan bin configuration now with class names instead of classes themselves
veltr
parents: 75
diff changeset
     7
Rkns.ResourceList.Bin.prototype._init = function(_renkan, _opts) {
160
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
     8
    this.renkan = _renkan;
73
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
     9
    this.title_$.html(_opts.title);
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    10
    if (_opts.list) {
160
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    11
        this.data = _opts.list;
73
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    12
    }
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    13
    this.refresh();
170
603ffa4c6fa5 correct ";" and "," in javascripts
ymh <ymh.work@gmail.com>
parents: 160
diff changeset
    14
};
73
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    15
196
2a2fcec209d0 Added in-graph search
veltr
parents: 170
diff changeset
    16
Rkns.ResourceList.Bin.prototype.render = function(searchbase) {
2a2fcec209d0 Added in-graph search
veltr
parents: 170
diff changeset
    17
    var search = searchbase || Rkns.Utils.regexpFromTextOrArray();
73
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    18
    function highlight(_text) {
196
2a2fcec209d0 Added in-graph search
veltr
parents: 170
diff changeset
    19
        var _e = _(_text).escape();
2a2fcec209d0 Added in-graph search
veltr
parents: 170
diff changeset
    20
        return search.isempty ? _e : search.replace(_e, "<span class='searchmatch'>$1</span>");
73
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    21
    }
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    22
    var _html = "",
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    23
        _this = this,
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    24
        count = 0;
433
e457ec945e50 replace underscore par lodash
ymh <ymh.work@gmail.com>
parents: 426
diff changeset
    25
    Rkns._.each(this.data,function(_item) {
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 196
diff changeset
    26
        var _element;
160
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    27
        if (typeof _item === "string") {
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    28
            if (/^(https?:\/\/|www)/.test(_item)) {
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 196
diff changeset
    29
                _element = { url: _item };
160
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    30
            } else {
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 196
diff changeset
    31
                _element = { title: _item.replace(/[:,]?\s?(https?:\/\/|www)[\d\w\/.&?=#%-_]+\s?/,'').trim() };
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 196
diff changeset
    32
                var _match = _item.match(/(https?:\/\/|www)[\d\w\/.&?=#%-_]+/);
160
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    33
                if (_match) {
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    34
                    _element.url = _match[0];
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    35
                }
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    36
                if (_element.title.length > 80) {
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    37
                    _element.description = _element.title;
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    38
                    _element.title = _element.title.replace(/^(.{30,60})\s.+$/,'$1…');
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    39
                }
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    40
            }
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    41
        } else {
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 196
diff changeset
    42
            _element = _item;
160
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    43
        }
75
7adef9ce92aa A few corrections for list bin
veltr
parents: 74
diff changeset
    44
        var title = _element.title || (_element.url || "").replace(/^https?:\/\/(www\.)?/,'').replace(/^(.{40}).+$/,'$1…'),
73
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    45
            url = _element.url || "",
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    46
            description = _element.description || "",
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    47
            image = _element.image || "";
75
7adef9ce92aa A few corrections for list bin
veltr
parents: 74
diff changeset
    48
        if (url && !/^https?:\/\//.test(url)) {
160
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    49
            url = 'http://' + url;
75
7adef9ce92aa A few corrections for list bin
veltr
parents: 74
diff changeset
    50
        }
196
2a2fcec209d0 Added in-graph search
veltr
parents: 170
diff changeset
    51
        if (!search.isempty && !search.test(title) && !search.test(description)) {
73
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    52
            return;
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    53
        }
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    54
        count++;
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    55
        _html += _this.resultTemplate({
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    56
            url: url,
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    57
            title: title,
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    58
            htitle: highlight(title),
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    59
            image: image,
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    60
            description: description,
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    61
            hdescription: highlight(description),
114
110f99eb417e moved options to defaults.js and improved read-only switching
veltr
parents: 78
diff changeset
    62
            static_url: _this.renkan.options.static_url
73
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    63
        });
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    64
    });
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    65
    _this.main_$.html(_html);
196
2a2fcec209d0 Added in-graph search
veltr
parents: 170
diff changeset
    66
    if (!search.isempty && count) {
73
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    67
        this.count_$.text(count).show();
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    68
    } else {
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    69
        this.count_$.hide();
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    70
    }
196
2a2fcec209d0 Added in-graph search
veltr
parents: 170
diff changeset
    71
    if (!search.isempty && !count) {
73
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    72
        this.$.hide();
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    73
    } else {
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    74
        this.$.show();
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    75
    }
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    76
    this.renkan.resizeBins();
170
603ffa4c6fa5 correct ";" and "," in javascripts
ymh <ymh.work@gmail.com>
parents: 160
diff changeset
    77
};
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 196
diff changeset
    78
78
af9e716b01bc Renkan bin configuration now with class names instead of classes themselves
veltr
parents: 75
diff changeset
    79
Rkns.ResourceList.Bin.prototype.refresh = function() {
73
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    80
    if (this.data) {
160
408da84d4dc0 Convert tabs added by ide configuration mistake
veltr
parents: 139
diff changeset
    81
        this.render();
73
cc9deb3b3e13 Added simple Resource bin
veltr
parents:
diff changeset
    82
    }
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 196
diff changeset
    83
};