summary refs log tree commit diff
path: root/webclient/room/room-controller.js (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Move webclient to a python module so that it can be installedMark Haines2014-11-041-1094/+0
|
* SYWEB-116: Implement historical display name support.Kegan Dougal2014-11-041-1/+2
| | | | | | | | | This works for both live and paginated events. Each 'message' event has an associated '__room_member' key which points to the state of the sender at that point in time. Invites have an additional key '__target_room_member' which point to the state of the invitee at that point in time. This obviates the need for mapping user_ids to *current* displaynames in the message list, though this is still required for the user/presence list.
* Fix hidden event keys being incorrectly shown in the even info dialog.Kegan Dougal2014-11-031-1/+5
|
* Keep matrixService stateless and make matrixFilter use modelService.Kegan Dougal2014-11-031-4/+6
|
* Replace lots of .events.rooms[room_id] with .roomKegan Dougal2014-10-311-10/+9
|
* room.html now displays messages from model-service. Add debugging fields. ↵Kegan Dougal2014-10-311-4/+7
| | | | Hook up the room member *at the time* to the message so it can display the right historical member info.
* SYWEB-102: Fix desktop notification msg when a user with no display name ↵Kegan Dougal2014-10-311-3/+6
| | | | joins a room.
* Factor out notification logic.Kegan Dougal2014-10-311-9/+10
|
* Add notification-service.js to handle binging/notifications. Shift logic to ↵Kegan Dougal2014-10-311-2/+12
| | | | this service.
* SYWEB-12: Add ability to add new state events.Kegan Dougal2014-10-301-1/+8
|
* SYWEB-12: Allow edited state events to be submitted.Kegan Dougal2014-10-301-2/+9
|
* SYWEB-12: More formatting and tweaking of state event JSON.Kegan Dougal2014-10-301-1/+10
| | | | | | | | Use a proper elastic directive to make the <textarea> resize dynamically. Use an 'asjson' directive to turn an ngModel of a JSON object into a formatted JSON string so it can be displayed on the textarea. Also, deep copy the state events being displayed, else it actually alters the underlying data structures when playing around with the JSON in the textarea!
* SYWEB-12: More formatting.Kegan Dougal2014-10-301-3/+3
|
* SYWEB-12: Add a 'Room Info' button which displays all state content.Kegan Dougal2014-10-301-0/+19
| | | | Content displayed in a modal dialog. Currently only read-only.
* SYWEB-98: Add redactEvent matrix API call.Kegan Dougal2014-10-291-1/+21
|
* SYWEB-98: Add a 'Redact' button to the event info modal dialog.Kegan Dougal2014-10-291-3/+18
| | | | | I think this is better than overriding the right-click contextual menu. Currently clicking this button does nothing.
* Fix SYWEB-128 : Auto-scroll broken if not exactly at bottom of list.Kegan Dougal2014-10-291-1/+3
| | | | | Added a small 10px buffer so if the list isn't quite at the bottom it still actually scrolls.
* Fix SYWEB-114 : Error message when trying to invite a user already in the room.Kegan Dougal2014-10-271-1/+1
|
* Implement SYWEB-121 : Display JSON when clicking messages.Kegan Dougal2014-10-271-2/+9
| | | | | JSON is displayed as a modal dialog via AngularJS' bootstrap module, "ui.bootstrap".
* fix webclient to know about right timestampsMatthew Hodgson2014-10-171-2/+2
|
* BF: Do a pagination when opening a room from an invitationEmmanuel ROHEE2014-09-251-5/+8
|
* Added hasOwnProperty tests when required to be robust to random properties ↵Emmanuel ROHEE2014-09-241-0/+6
| | | | added to he Object prototype
* close buttons on recents (SYWEB-68)Matthew Hodgson2014-09-241-1/+1
|
* oops, stupid bug on room/$room/stateMatthew Hodgson2014-09-231-2/+2
|
* use all new /rooms/<room id>/state to actually gather the state for rooms ↵Matthew Hodgson2014-09-231-0/+20
| | | | whenever join them. a bit ugly, as we don't currently have a nice place to gather housekeeping after joining a room, so horrible code duplication...
* remove the ng-model attribute from mainInput textarea to stop the digest ↵Matthew Hodgson2014-09-201-15/+15
| | | | being run every time you press a key (SYWEB-4)
* Notify a callee that their browser doesn't support VoIP too.David Baker2014-09-191-1/+0
| | | | SYWEB-14 #resolved
* Merge branch 'videocalls' into developDavid Baker2014-09-191-2/+6
|\ | | | | | | | | Conflicts: webclient/room/room.html
| * Video calling (in a tiny box at the moment)David Baker2014-09-171-2/+6
| |
* | SYWEB-13 SYWEB-14: disabled "Call" button if the browser does not support ↵Emmanuel ROHEE2014-09-191-1/+2
| | | | | | | | all required WebRTC features
* | fix SYWEB-41 (hopefully)Matthew Hodgson2014-09-181-1/+7
| |
* | Fixed missing component dependency which created a crashEmmanuel ROHEE2014-09-181-3/+2
| |
* | SYWEB-30: BF: When switching between rooms, pagination flickered between the ↵Emmanuel ROHEE2014-09-171-1/+9
| | | | | | | | top of the room before jumping to the bottom of the page
* | BF: edit the actual room name not the displayed room name (which has been ↵Emmanuel ROHEE2014-09-171-2/+7
| | | | | | | | computed)
* | SYWEB-7: Use sessionStorage to make per-room history survives when the user ↵Emmanuel ROHEE2014-09-171-1/+17
| | | | | | | | navigates through rooms
* | SYWEB-7: Up & down keys let user step through the history as per readline or ↵Emmanuel ROHEE2014-09-171-2/+70
| | | | | | | | xchat
* | WEB-35: joins/parts should trigger desktop notificationsEmmanuel ROHEE2014-09-171-4/+18
| |
* | Added bing detection logic. Persist the display name of the user in ↵Kegan Dougal2014-09-161-2/+2
| | | | | | | | localstorage for use when binging.
* | Move the notification logic out of an individual room controller and into ↵Kegan Dougal2014-09-161-16/+0
| | | | | | | | the general event handler, so we can notify for >1 room.
* | Added a section on bing words if you enable desktop notifications.Kegan Dougal2014-09-161-1/+1
|/
* Fixed scroll flickering when opening the roomEmmanuel ROHEE2014-09-161-0/+4
|
* If an initialSync has been already done on a room, we do not need to ↵Emmanuel ROHEE2014-09-161-2/+15
| | | | paginate back to get more messages
* WEB-29: Improve room page content loadingEmmanuel ROHEE2014-09-161-1/+1
| | | | InitialSync: load the 30 last messages of each room so that a full page of messages can be displayed without additionnal request
* always scroll to bottom when entering a roomMatthew Hodgson2014-09-131-2/+2
|
* Merge branch 'release-v0.2.3' of github.com:matrix-org/synapseErik Johnston2014-09-121-41/+159
|\ | | | | | | | | Conflicts: webclient/room/room-controller.js
| * Added edition of room nameEmmanuel ROHEE2014-09-121-6/+41
| |
| * Clearly show when an user cannot join a room.Emmanuel ROHEE2014-09-111-1/+24
| | | | | | | | In realtime show who kicked or banned him.
| * Invite: reset the input when the invitation has been doneEmmanuel ROHEE2014-09-111-3/+4
| |
| * Room topic: if the request fails, show the error in the feedbackEmmanuel ROHEE2014-09-111-1/+8
| |
| * BF: made input autofocus work when opening the room topic inputEmmanuel ROHEE2014-09-111-0/+5
| |
| * Reenabled transparent echo message. It turns to opaque without flickering now.Emmanuel ROHEE2014-09-101-17/+8
| |
| * Clean previous request feedback when doing a new requestEmmanuel ROHEE2014-09-101-0/+3
| |
| * BF: Made /op work when providing no power value. 50 is used as default in ↵Emmanuel ROHEE2014-09-101-1/+1
| | | | | | | | this case
| * Improved requests: pagination is done from the data received in initialSyncEmmanuel ROHEE2014-09-101-9/+7
| |
| * Don't play an engaged tone if we hang up locally.David Baker2014-09-091-1/+9
| |
| * Improved room page loading flow: do pagination only when the members list is ↵Emmanuel ROHEE2014-09-091-3/+5
| | | | | | | | | | | | available. Killed an unexpected pagination trigger when the page load: paginateMore
| * BF: prevent joined messages to be displayed twice when joining a room.Emmanuel ROHEE2014-09-091-4/+16
| | | | | | | | Do this by synchronizing the m.room.member joined event from the events stream and the start of the pagination
| * Display a 'Set Topic' button if there is no topic or it's a 0-len string.Kegan Dougal2014-09-081-1/+8
| |
| * Add ability to set topic by double-clicking on the topic text then hitting ↵Kegan Dougal2014-09-081-0/+25
| | | | | | | | enter.
| * fix embarassing bug where in-progress messages get vaped when the previous ↵Matthew Hodgson2014-09-081-1/+3
| | | | | | | | one gets delivered
| * fix desktop notifs, which were broken in eab463fdMatthew Hodgson2014-09-081-2/+2
| |
| * disable broken event dup suppression, and fix echo for /meMatthew Hodgson2014-09-081-14/+16
| |
| * Revert "BF: Made notification work again (forgot to renamed "offline" to ↵Emmanuel ROHEE2014-09-081-1/+1
| | | | | | | | | | | | "unavailable")" This reverts commit c3f9d8e41bf2d23f676a10ec4579434a94b1fc39.
| * BF: Made notification work again (forgot to renamed "offline" to "unavailable")Emmanuel ROHEE2014-09-081-1/+1
| |
* | fix embarassing bug where in-progress messages get vaped when the previous ↵Matthew Hodgson2014-09-061-1/+3
| | | | | | | | one gets delivered
* | fix desktop notifs, which were broken in eab463fdMatthew Hodgson2014-09-061-2/+2
| |
* | disable broken event dup suppression, and fix echo for /meMatthew Hodgson2014-09-061-14/+16
|/
* handle m.room.aliases for id<->alias mapping; remove local_storage map; stop ↵Matthew Hodgson2014-09-061-7/+45
| | | | local echo flickering by removing opacity transition for now; implement /join
* BF: Update the members list on banned & kicked "events"Emmanuel ROHEE2014-09-051-4/+13
|
* autoscroll down(if the scroller was already at the bottom) when receiving ↵Emmanuel ROHEE2014-09-051-13/+18
| | | | member events
* Created kick & unban methods in matrixService. Made some factorisation.Emmanuel ROHEE2014-09-051-12/+3
|
* Added sanity checks in commandsEmmanuel ROHEE2014-09-051-34/+55
|
* BF: Make /unban work againEmmanuel ROHEE2014-09-051-1/+1
|
* Fixed duplicated messages sending in slow network condition.Emmanuel ROHEE2014-09-051-3/+41
| | | | | | | Show the message sending flow state in the messages list: - While sending, the message appears semi transparent in the chat. - If successfully sent, it appears as before, ie normal - In case of failure, it appears in red with an Unsent text.
* Cleaned all sending references as it not usedEmmanuel ROHEE2014-09-051-22/+4
|
* Do not systematically scroll to the bottom on new events in the roomEmmanuel ROHEE2014-09-051-2/+8
|
* switch IRC-style command parser to use regexps rather than split(" ") so ↵Matthew Hodgson2014-09-041-52/+88
| | | | | | | | that it doesn't choke on consecutive whitespaces yield better errors for invalid commands don't pass invalid commands through as messages support kick reasons
* Moved mRoomName filter into matrix-filter.js, a place for all generic ↵Emmanuel ROHEE2014-09-041-1/+1
| | | | filters using Matrix data.
* Ignore leave members in the list tooEmmanuel ROHEE2014-09-031-2/+2
|
* Normalise users power levels so that the user with the higher power level ↵Emmanuel ROHEE2014-09-031-0/+23
| | | | will have a bar covering 100% of the width of his avatar
* Use /rooms/$room_id/state/m.room.member/$user_id to change the membership of ↵Emmanuel ROHEE2014-09-031-2/+2
| | | | another user
* fix the copyright holder from matrix.org to OpenMarket Ltd, as matrix.org ↵Matthew Hodgson2014-09-031-1/+1
| | | | hasn't been incorporated in time for launch.
* Added /kick $user_idEmmanuel ROHEE2014-09-031-4/+14
|
* Added /unban $user_idEmmanuel ROHEE2014-09-031-0/+10
|
* Send unrecognized commands as text message (as before)Emmanuel ROHEE2014-09-031-1/+2
|
* Do not define power level limits in setUserPowerLevel. Update the function ↵Emmanuel ROHEE2014-09-031-1/+1
| | | | to be used as a resetUserPowerLevel
* Added /deop $user_idEmmanuel ROHEE2014-09-031-1/+9
|
* Added /op $user_id $powerLevelEmmanuel ROHEE2014-09-031-1/+17
|
* Better indicate in the page feedback section that a user can't join a room ↵Emmanuel ROHEE2014-09-031-1/+2
| | | | (because he has been banned for ex). May be worth to be put in the middle of screen
* Do not show banned people in member list. Format ban events strings in room ↵Emmanuel ROHEE2014-09-031-0/+5
| | | | and recent flows
* Added /ban commandEmmanuel ROHEE2014-09-031-0/+16
|
* Made IRC style command easier to handle specifically for possible argumentsEmmanuel ROHEE2014-09-031-10/+22
|
* BF: Reset base timer time ($scope.now) everytime last_active_ago is touchedEmmanuel ROHEE2014-09-021-7/+6
|
* Represent user power level in a room by a red bar at the bottom of his ↵Emmanuel ROHEE2014-09-021-0/+10
| | | | avatar image. The width of this bar depends on the power level.
* BF: Armed updateMemberListPresenceAge only onceEmmanuel ROHEE2014-09-021-1/+3
|
* BF: Take into account MEMBER_EVENT and PRESENCE_EVENT events only after the ↵Emmanuel ROHEE2014-09-021-2/+6
| | | | initialSync is done
* Follow API renaming. state -> presence. mtime_ago -> last_active_agoEmmanuel ROHEE2014-09-011-13/+12
|
* Fairly simple move of the call status widget to the header bar (and ↵David Baker2014-09-011-25/+3
| | | | therefore into the index page rather than the rooms page).
* Fixed presence change that occurs -Xs agoEmmanuel ROHEE2014-09-011-0/+5
|
* Fixed presence state update. Specifically, the current user was sometimes ↵Emmanuel ROHEE2014-09-011-5/+23
| | | | indicated as offline
* nasty big monolithic commit of a whole bunch of UI/UX improvements:Matthew Hodgson2014-08-311-6/+1
| | | | | | | | - add a simple CSS template across the app for navigation & cosmetics - split login into login & register, and totally reskin it - restructure room CSS to play nicely with it - implement basis 1:1 chat from user pages - disable autofocus on iOS to improve UX
* Give basic feedback on the state of VoIP calls in the UI.David Baker2014-08-291-2/+0
|
* todoMatthew Hodgson2014-08-291-1/+1
|
* Implemented /nickEmmanuel ROHEE2014-08-291-0/+4
|
* update presence times in realtime through the magic of two-way bindingMatthew Hodgson2014-08-291-34/+14
|
* Only show voice call button if there are exactly 2 members in the room. Also ↵David Baker2014-08-291-1/+5
| | | | hide the somewhat user unfriendly call state.
* Merge branch 'develop' of github.com:matrix-org/synapse into developDavid Baker2014-08-291-10/+9
|\
| * Show notifications only when the user is detected as idleEmmanuel ROHEE2014-08-291-10/+9
| |
* | Change call signalling messages to be their own types of room events rather ↵David Baker2014-08-291-1/+1
|/ | | | than room messages with different msgtypes: room messages should be things that the client can display as a unit message to the user.
* Merge branch 'voip' into developDavid Baker2014-08-291-2/+35
|\ | | | | | | | | Conflicts: webclient/room/room-controller.js
| * First basic working VoIP call supportDavid Baker2014-08-281-0/+19
| |
| * WIP voip support on web clientDavid Baker2014-08-271-2/+16
| |
* | Cleaned up ng deps. By convention, angular modules must be listed at firstEmmanuel ROHEE2014-08-291-3/+3
| |
* | When opening this page, do not join a room already joinedEmmanuel ROHEE2014-08-281-26/+51
| |
* | Cleaned up depsEmmanuel ROHEE2014-08-281-2/+2
| |
* | Start the events stream once the app starts (if credentials are in cache) or ↵Emmanuel ROHEE2014-08-281-1/+0
|/ | | | once the user gets logged in
* BF: mFileInput dependency got lost somewhere and upload buttons did not work ↵Emmanuel ROHEE2014-08-271-1/+1
| | | | anymore
* Highlight the current room in the recents listEmmanuel ROHEE2014-08-271-0/+3
|
* Adjusted webclient to use new state paths. Updated membership msg template ↵Kegan Dougal2014-08-261-5/+8
| | | | to actually show the person invited. Factored out common membership functions in matrix service.
* Merge branch 'settings-page' into developEmmanuel ROHEE2014-08-221-1/+1
|\
| * Use /home everywhereEmmanuel ROHEE2014-08-221-1/+1
| |
* | Check if the membership message was for the room we were in before updating ↵Erik Johnston2014-08-221-0/+2
| | | | | | | | the membership list
* | Keep track of people's presence and query that when we update the members list.Erik Johnston2014-08-221-3/+7
| |
* | Reinitialize room when creating a RoomController so that we start off with a ↵Erik Johnston2014-08-221-0/+2
|/ | | | clean slate, as it expects/
* Use $location.url instead of $location.path to get clean page URL without ↵Emmanuel ROHEE2014-08-221-3/+3
| | | | | | hash arguments of the previous page. This happpens with room URL like http://127.0.0.1:8080/matrix/client/#/room/#public:localhost. The second hash part is transferred to the next page when using $location.path.
* fix mainInput retaining focus between sending consecutive messages by ↵Matthew Hodgson2014-08-221-2/+2
| | | | disabling commit 955662d6
* Only start event streaming after having set up the controllers.Erik Johnston2014-08-211-0/+1
|
* stop hammering the HS for displayname and avatar URLsMatthew Hodgson2014-08-211-3/+5
|
* Merge branch 'develop' of github.com:matrix-org/synapse into release-v0.0.1Erik Johnston2014-08-211-22/+12
|\
| * Generate thumbnail client side and send its URL and info with the image ↵Emmanuel ROHEE2014-08-211-22/+12
| | | | | | | | message body
* | Fixed first pagination detectionEmmanuel ROHEE2014-08-211-2/+3
|/
* BF: Wait for the room_id being resolved before starting paginationEmmanuel ROHEE2014-08-201-2/+2
|
* Send images with their imageInfo (size, mymetype, width & height)Emmanuel ROHEE2014-08-201-13/+31
|
* Replaced the image URL text input by a file selector button: "Send Image"Emmanuel ROHEE2014-08-201-2/+3
|
* Disabled sending buttons while a message is being sent. Useful on bad ↵Emmanuel ROHEE2014-08-201-3/+15
| | | | Internet connection.
* File organisation sanity: put directives and filters into dedicated filesEmmanuel ROHEE2014-08-201-116/+0
|
* keepScroll: a directive to anchor the scroller position at the bottom when ↵Emmanuel ROHEE2014-08-191-0/+27
| | | | the browser is resizing
* Merge remote-tracking branch 'origin/master' into user_pageEmmanuel ROHEE2014-08-191-1/+1
|\
| * show private room_ids rather than nulls in notifs if there is no room_aliasMatthew Hodgson2014-08-181-1/+1
| |
* | Use $location.url to open the user profile page. The user page URL is then ↵Emmanuel ROHEE2014-08-191-1/+1
| | | | | | | | | | | | the one expected: http://127.0.0.1:8000/#/user/@Manu:localhost:8080 insteaf of http://127.0.0.1:8000/#/user/@Manu:localhost:8080#public:localhost:8080
* | Added link to user profile pagesEmmanuel ROHEE2014-08-191-0/+5
|/
* Support urlencoded room aliases in room URLEmmanuel ROHEE2014-08-181-15/+27
|
* Support room alias in rooms URL (ex: ↵Emmanuel ROHEE2014-08-181-1/+42
| | | | http://127.0.0.1:8000/#/room/#public:localhost:8080)
* webclient: Tweak namespace of auto-complete directive. ng- should really ↵Kegan Dougal2014-08-181-1/+1
| | | | only be used for official ng directives.
* Added another button to upload and send an image.Emmanuel ROHEE2014-08-181-0/+17
| | | | The text input and its send button for sending an image URL will be removed once we have a true upload image service
* implement html5 notifications. (have to be explicitly requested under Config)Matthew Hodgson2014-08-171-1/+18
|
* dial down loggingMatthew Hodgson2014-08-171-5/+5
|
* - use css3 to make avatars always the right aspect ratioMatthew Hodgson2014-08-171-0/+91
| | | | - implement slightly overengineered tab/shift-tab autocomplete function
* autohyperlink messages using linkyMatthew Hodgson2014-08-161-1/+1
|
* improve infinite scrolling so it keeps paginating until you have a scrollbar ↵Matthew Hodgson2014-08-161-17/+28
| | | | (if it can)
* roll back b602834 as it made a bizarre subset of avatars go awolMatthew Hodgson2014-08-161-6/+5
|
* don't hammer a new hit for every displayname and avatar_url when we already ↵Matthew Hodgson2014-08-161-1/+14
| | | | have them in the members list...
* display mtime_age in webclientMatthew Hodgson2014-08-161-9/+10
|
* slightly hacky but more functional infinite scrollingMatthew Hodgson2014-08-161-30/+36
|
* FormattingKegan Dougal2014-08-151-20/+20
|
* Get presence for members when you enter a room (it was coming down but ↵Kegan Dougal2014-08-151-0/+4
| | | | wasn't being stored in the right place)
* Added infinite scrolling. It's sliiiightly buggy in that it jumps down the ↵Kegan Dougal2014-08-151-3/+41
| | | | list a bit, but it is overall working pretty well. Added ng-infinite-scroll-matrix.js and jquery-1.8.3 as deps.
* Remove old polling stuff from RoomController. Added service comments. Do not ↵Kegan Dougal2014-08-151-40/+0
| | | | start the event stream on startup unless you have credentials.
* Event streaming now happens on an app level, rather than a per-room level. ↵Kegan Dougal2014-08-151-4/+0
| | | | Make eventStreamService manage it's own repolling provided no one calls stop() on it. Couple the stream with eventHandlerService so any controller can just blithely call eventStreamService.resume() and expect to 'get stuff' without having to handle promises (though resume() still returns a promise for that request and proxies it through $q). Kill and reset the stream if you logout.
* Store messages in $rootScope so they can be accessed from multiple ↵Kegan Dougal2014-08-151-6/+1
| | | | controllers without duplicated storage for each. This also gives updates.
* Added event handler service which.. handles events. More specifically, it ↵Kegan Dougal2014-08-151-27/+21
| | | | $broadcasts events depending on their type, and does processing on events (shuffling keys, adding events to $rootScope so displays will automatically update, sending delivery receipts, and so on). Some of this logic was previously contained in the RoomController, which fails the moment you add >1 room into the mix, hence requiring a Service to handle events, rather than having each individual controller maintain their part of the world.
* Added event stream service which neatly blobs together requests / state for ↵Kegan Dougal2014-08-151-13/+10
| | | | the event stream. This depends on matrix service to do the actual hit. Currently this has exactly the same behaviour as before.
* More helpful display when the event stream fails, wiping it when the ↵Kegan Dougal2014-08-141-4/+6
| | | | connection is regained.
* webclient: You can now paginate in rooms. Defaults to 10 messages, with a ↵Kegan Dougal2014-08-141-21/+59
| | | | button to get more (needs to be hooked into infini-scrolling).
* Finish up room controller too. May have missed one or two, but testing ↵Kegan Dougal2014-08-141-14/+14
| | | | didn't pick anything up.
* completely change the CSS to be an entirely 'position: absolute' layout ↵Matthew Hodgson2014-08-141-1/+5
| | | | rather than top-to-bottom. makes the overscroll much more predictable and sane and not dependent on CSS expressions.
* don't hammer after 403Matthew Hodgson2014-08-131-1/+4
|
* Use strings instead of opaque magic-number constants for presence states; ↵Paul "LeoNerd" Evans2014-08-131-7/+4
| | | | rename AWAY to UNAVAILABLE
* Room: Added a text input to type an image URL in order to send an image messageEmmanuel ROHEE2014-08-131-1/+12
|
* add in copyrights to everything, not just the synapse subdir, and add a ↵Matthew Hodgson2014-08-131-0/+16
| | | | copyrighter.pl whilst we're at it
* Make messages list and room users list scroll-overflowEmmanuel ROHEE2014-08-121-1/+2
|
* Reference Matrix Home Servermatrix.org2014-08-121-0/+214